/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package trabalhocompiladores.entidade.automato.Operacoes;

import trabalhocompiladores.entidade.Automato;
import trabalhocompiladores.entidade.Estado;
import trabalhocompiladores.entidade.Expressao;
import trabalhocompiladores.entidade.Transacao;


/**
 *
 * @author u031254
 */
public class OperacaoMultiplicacao implements IOperacoes{

    @Override
     public void gerarEstados(Automato automato, Expressao expressao) {
      //Variável local para contagem dos estados <code>contStates</code>
      Integer contStates, contStatesInicial;
      contStates = contStatesInicial = automato.getEstados().size(); 

         //pega o indice do primeiro estado   
         automato.gerarAFN("e");
         Estado primeiroEstado = automato.getEstados().get(contStatesInicial);
         contStates++;
         //pega o indice do proximo estado
         automato.gerarAFN(expressao.getExpressao());
         Estado segundoEstado = automato.getEstados().get(contStates-1);

         //pega a quantidade de estados atuais para poder gerar as transações
         contStates = automato.getEstados().size();
         Estado penultimoEstado = automato.getEstados().get(contStates-1);
         
         automato.gerarAFN("e");
         contStates++;
         
         Estado ultimoEstado =  automato.getEstados().get(contStates-1);
         //resolvendo as transações
         
         penultimoEstado.getLista().add(new Transacao("e",penultimoEstado,segundoEstado));
         primeiroEstado.getLista().add(new Transacao("e", primeiroEstado, ultimoEstado));
         
   }
    
}
